修复 NPM 的权限问题

此处输入图片的描述

解决使用 NPM 全局安装(npm install -g xxx) 相关 Package 时提示 EACCES error 的权限问题。
错误的原因,通常是因为当前用户没有相关安装目录的写入权限。

此处输入图片的描述

对于大多数 *nix 系统来说,npm 的安装目录是在 /usr/local 中,具体可以通过 npm config get prefix 加以验证,如果不是在 /usr/local 下的话,以下方法将不适用。

Step 1:

首先更改 /usr/local 中如下目录的所有者为当前用户:

1
2
3
sudo chown -R username /usr/local/lib/node_modules
sudo chown -R username /usr/local/share
sudo chown -R username /usr/local/bin

(username 可以通过 whoami 查看,具体示当前用户而定)

Step 2

更改完成后正常 npm install -g xxx 相关 Package。如果仍然无法安装,继续出现 .npm 目录的权限错误,将其更改即可。

1
sudo chown -R $USER:$GROUP ~/.npm

Step 3

如果安装过 ZSH,恰好在 /usr/local/share/ 目录中存在 zsh 的相关文件。由于递归更改了 /usr/local/share/ 目录中的所有文件的拥有者,那么每次登入 Terminal 后都会出现:

zsh compinit: insecure directories, run compaudit for list. Ignore
insecure directories and continue [y] or abort compinit [n]?
的提示,ZSH 会提示不安全目录的问题。

此时可以通过 compaudit 查看相关目录,之后将其拥有者改为 root 即可:

1
2
sudo chmod -R 755 /usr/local/share/zsh/site-functions
sudo chown -R root /usr/local/share/zsh/site-functions

相关参考资料:Fixing npm permissions

无「民事行为能力」人慎点